package com.horizon.im.imServer.server.session.entity;

import lombok.Builder;
import lombok.Data;

import java.util.LinkedHashMap;
import java.util.Map;

//维护用户和session之间的关系

/**
 * 每个用户都有一个map，key=sessionId,value=session
 * 注意key为SessionId不是Userid。
 * 主要是因为同一个用户可能从网页端、
 * 手机端、电脑桌面同时登录IM服务端，
 * 就像微信、QQ那样，
 * 此时同一个用户的消息需要在手机端、
 * 网页端、桌面端进行同步，
 * 各个终端需要能同时接收消息、同时发送消息。
 */
@Data
@Builder(toBuilder = true)
public class UserCache {
    private String userId;
    private Map<String, SessionCache> map = new LinkedHashMap<>(10);

    public UserCache(String userId)
    {
        this.userId = userId;
    }

    //为用户增加session
    public void addSession(SessionCache session)
    {

        map.put(session.getSessionId(), session);
    }

    //为用户移除session
    public void removeSession(String sessionId)
    {
        map.remove(sessionId);
    }
}
